﻿#region Đào Mạnh Hòa
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace GUI.CongNo
{
    public partial class frmNhapSoDu : Form
    {
        #region khởi tạo
        bool checkClose = false;
        bool checkTrangThai = false;
        string ma = "";
        string year;
        string month;
        Entities.SoDuCongNo[] hienthi;
        Entities.SoDuCongNo[] tempcheck;
        Entities.SoDuCongNo sdcn;
        Entities.SoDuCongNo save;
        string masoducongno="";
        string hanhDong;
        Entities.KhachHang[] khachhang;
        string makho = "";
        string tenkho = "";
        Entities.NhaCungCap[] nhacungcap;
        Entities.SoDuCongNo[] sodcn;
        string madoituong;
        string tendoituong;
        string diachi;
        string soducuoiky;
        bool loaidoituong;
        bool trangthai;
        double sodudauky;
        DateTime date;
        double sono = 0;
        string no;

        public frmNhapSoDu()
        {
            InitializeComponent();
            Entities.CaiDatKho kho = Entitystatic.ViewFile();
            makho = kho.MaKho;
            tenkho = kho.TenKho;
            date = Entitystatic.date;
            cbbNam.Text = date.Year.ToString();
            cbbThang.Text = date.Month.ToString();
            cbbDoiTuong.SelectedIndex = 0;
            Entities.KhachHang kh = new Entities.KhachHang();
            kh.HanhDong = "1";
            khachhang = Common.StaticVariable.InterfaceObject.SelectKhachHang(kh);
            nhacungcap = Common.StaticVariable.InterfaceObject.Select_NCC();
            
            hanhDong = "Insert";
            Select();
        }

        public frmNhapSoDu(Entities.SoDuCongNo soducongno)
        {
            InitializeComponent();
            Entities.CaiDatKho kho = Entitystatic.ViewFile();
            makho = kho.MaKho;
            tenkho = kho.TenKho;
            date = Entitystatic.date;
            cbbNam.Text = date.Year.ToString();
            cbbThang.Text = date.Month.ToString();
            cbbDoiTuong.SelectedIndex = 0;
            Entities.KhachHang kh = new Entities.KhachHang();
            kh.HanhDong = "1";
            khachhang = Common.StaticVariable.InterfaceObject.SelectKhachHang(kh);
            nhacungcap = Common.StaticVariable.InterfaceObject.Select_NCC();
            sdcn = soducongno;
            XuLyDuLieu(soducongno);

            hanhDong = "Update";
            Select();
        }

        public Entities.SoDuCongNo[] HienThi(string makho)
        {
            try
            {
                Entities.SoDuCongNo[] temp = Common.StaticVariable.InterfaceObject.SelectCongNoTheoKho(makho);
                return temp;
            }
            catch
            {
                return new Entities.SoDuCongNo[0];
            }
        }

        void fix()
        {
            try
            {
                for (int i = 0; i < dgvHienThi.ColumnCount; i++)
                {
                    dgvHienThi.Columns[i].Visible = false;
                }
                dgvHienThi.ReadOnly = true;
                dgvHienThi.Columns[Common.Constants.CongNo.MaDoiTuong].Visible = true;
                dgvHienThi.Columns[Common.Constants.CongNo.TenDoiTuong].Visible = true;
                dgvHienThi.Columns[Common.Constants.CongNo.DiaChi].Visible = true;
                dgvHienThi.Columns["SoDuDauKy"].Visible = true;
                dgvHienThi.Columns[Common.Constants.CongNo.MaDoiTuong].HeaderText = "Mã Đối Tượng";
                dgvHienThi.Columns[Common.Constants.CongNo.TenDoiTuong].HeaderText = "Tên Đối Tượng";
                dgvHienThi.Columns[Common.Constants.CongNo.DiaChi].HeaderText = "Địa Chỉ";
                dgvHienThi.Columns["SoDuDauKy"].HeaderText = "Số Dư Đầu Kỳ";
                dgvHienThi.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
                dgvHienThi.AllowUserToAddRows = false;
                dgvHienThi.AllowUserToDeleteRows = false;
                dgvHienThi.AllowUserToResizeRows = false;
                dgvHienThi.RowHeadersVisible = false;
            }
            catch
            {
            }
        }
        #endregion

        #region hiển thị
        void Select()
        {
            try
            {
                bool loaiDoiTuong = false;
                if (cbbDoiTuong.SelectedIndex == 0)
                    loaiDoiTuong = false;
                else
                    loaiDoiTuong = true;
                hienthi = HienThi(makho);
                if (hienthi == null)
                {
                    hienthi = new Entities.SoDuCongNo[0];
                    lbTrangThai.Text = "Kỳ này chưa đóng";
                    checkTrangThai = false;
                    dgvHienThi.DataSource = hienthi;
                    fix();
                    return;
                }
                year = cbbNam.Text;
                month = cbbThang.Text;
                int sotang = 0;
                bool ktsd = false;
                Entities.SoDuCongNo[] sq = new Entities.SoDuCongNo[hienthi.Length];
                for (int i = 0; i < sq.Length; i++)
                {
                    string namkt = hienthi[i].NgayKetChuyen.Year.ToString();
                    string thangkt = hienthi[i].NgayKetChuyen.Month.ToString();
                    // nếu năm tháng trong bản ghi - năm tháng hiện tại và loại đối tượng
                    if (namkt == year && thangkt == month && hienthi[i].LoaiDoiTuong == loaiDoiTuong)
                    {
                        // nếu trạng thái = false
                        if (hienthi[i].TrangThai == false)
                        {
                            lbTrangThai.Text = "Kỳ này chưa đóng";
                            checkTrangThai = false;
                        }
                        else
                        {
                            lbTrangThai.Text = "Kỳ này đã khóa";
                            checkTrangThai = true;
                        }
                        ma = hienthi[i].MaSoDuCongNo;
                        sq[sotang] = hienthi[i];
                        sotang++;
                        ktsd = true;
                    }
                }
                // nếu không có đối tượng nào đúng
                if (ktsd == false)
                {
                    lbTrangThai.Text = "Kỳ này chưa đóng";
                    checkTrangThai = false;
                }
                // nếu không có bản ghi nào tồn tại
                if (sotang != 0)
                {
                    hienthi = new Entities.SoDuCongNo[sotang];
                    for (int i = 0; i < sotang; i++)
                    {
                        hienthi[i] = new Entities.SoDuCongNo("", sq[i].MaSoDuCongNo, sq[i].MaDoiTuong, sq[i].TenDoiTuong, sq[i].DiaChi, sq[i].SoDuDauKy);
                    }

                }
                else
                {
                    hienthi = new Entities.SoDuCongNo[0];
                    dgvHienThi.DataSource = hienthi;
                    fix();
                    sodcn = hienthi;
                    return;
                }
                dgvHienThi.DataSource = hienthi;
                fix();
                sodcn = hienthi;
            }
            catch
            {
            }
        }
        #endregion

        #region Xử lý thêm sửa
        void XulyThemSua()
        {
            if (hanhDong == "Insert")
                GhiLai();
        }
        #endregion

        #region check
        public bool CheckDataGridViewInsert()
        {
            try
            {
                if (hienthi == null)
                {
                    return true;
                }

                if (hienthi.Length != 0)
                {

                    for (int i = 0; i < hienthi.Length; i++)
                    {
                        if (hienthi[i].MaDoiTuong == txtMaDoiTuong.Text)
                        {
                            MessageBox.Show("Đối tượng đã tồn tại - không thể nhập thêm", "Hệ thống cảnh báo");
                            txtMaDoiTuong.Focus();
                            return false;
                        }
                    }
                    return true;
                }
                else
                {
                    return true;
                }
            }
            catch
            {
                return false;
            }
        }
        #endregion

        #region Sửa LV
        void SuaRow()
        {
            if (i < 0)
                return;
            if (dgvHienThi.RowCount == 0)
                return;
            Entities.SoDuCongNo save1 = save;

            Entities.SoDuCongNo[] ht = (Entities.SoDuCongNo[])dgvHienThi.DataSource;
            string month1 = date.Month.ToString();
            // kiểm tra tháng hiên tại và tháng được chọn
            if (month1 != month)
            {
                MessageBox.Show("Không phải kỳ hiện tại", "Hệ thống cảnh báo");
                return;
            }

            hienthi = HienThi(makho);
            // nếu obj khác null
            if (hienthi != null)
            {
                for (int j = 0; j < hienthi.Length; j++)
                {
                    string monthkytruoc = (Convert.ToInt32(month) - 1).ToString();
                    string mm = hienthi[j].NgayKetChuyen.Month.ToString();
                    // kiểm tra kỳ trước của tháng đang chọn
                    if (mm == monthkytruoc)
                    {
                        MessageBox.Show("Số dư đầu kỳ là kết chuyển từ kỳ trước - không thể thay đổi", "Hệ thống cảnh báo");
                        Select();
                        return;
                    }
                }
            }

            if (checkTrangThai)
            {
                MessageBox.Show("Kỳ này đã khóa không thể xóa - Kiếm tra lại", Common.MSG.TieuDe);
                return;
            }
            // list view = null
            if (ht == null)
                return;
            // obj = null
            if (save == null)
                return;
            bool kt = false;
            foreach (Entities.SoDuCongNo item in sodcn)
            {
                if (item.MaDoiTuong == save.MaDoiTuong)
                {
                    kt = true;
                    break;
                }
            }
            if (kt)
            {
                if (MessageBox.Show("bạn có chắc chắn muốn xóa bản ghi ko", Common.MSG.TieuDe, MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                {
                    Xoa();
                }
                else
                {
                    return;
                }
            }
            tempcheck = new Entities.SoDuCongNo[ht.Length - 1];
            int sotang = 0;
            for (int j = 0; j < ht.Length; j++)
            {
                if (ht[j].MaDoiTuong == save1.MaDoiTuong)
                {
                    txtMaDoiTuong.Text = save1.MaDoiTuong;
                    txtTenDoiTuong.Text = save1.TenDoiTuong;
                    txtDiaChi.Text = save1.DiaChi;
                    txtSoDuDauKy.Text = save1.SoDuDauKy;

                }
                else
                {
                    tempcheck[sotang] = ht[j];
                    sotang++;
                }
            }
            dgvHienThi.DataSource = tempcheck;
            fix();

        }
        #endregion

        #region Thêm Mới LV
        void ThemLV()
        {
            if (Validate())
            {
                if (!CheckDataGridViewInsert())
                {
                    return;
                }
                madoituong = txtMaDoiTuong.Text;
                tendoituong = txtTenDoiTuong.Text.ToString();
                diachi = txtDiaChi.Text.ToString();
                sodudauky = double.Parse(txtSoDuDauKy.Text.ToString());
                NewRow();
                txtMaDoiTuong.Text = "";
                txtTenDoiTuong.Text = "";
                txtDiaChi.Text = "";
                txtSoDuDauKy.Text = "";
                txtMaDoiTuong.Focus();
            }
        }
        public void NewRow()
        {
            bool loaidt = false;
            if (cbbDoiTuong.SelectedIndex == 0)
                loaidt = false;
            else
                loaidt = true;
            try
            {
                bool kt1 = false;
                int sohangtrongbang;
                hienthi = (Entities.SoDuCongNo[])dgvHienThi.DataSource;
                // list view = null
                if (hienthi == null)
                {

                    tempcheck = new Entities.SoDuCongNo[1];
                    tempcheck[0] = new Entities.SoDuCongNo("Insert", 0, masoducongno, txtMaDoiTuong.Text, txtTenDoiTuong.Text.ToString(), txtDiaChi.Text.ToString(), txtSoDuDauKy.Text, date, "0", loaidt, makho, false);
                    dgvHienThi.DataSource = tempcheck;
                    fix();
                    return;
                }

                sohangtrongbang = hienthi.Length;
                // số lượng bảng ghi khác 0
                if (sohangtrongbang != 0)
                {
                    for (int j = 0; j < sohangtrongbang; j++)
                    {
                        // nếu tìm được mã đã có trong list view
                        if (txtMaDoiTuong.Text == hienthi[j].MaDoiTuong)
                        {
                            tempcheck = new Entities.SoDuCongNo[sohangtrongbang];
                            break;
                        }
                        // nếu không tìm được
                        else
                            tempcheck = new Entities.SoDuCongNo[sohangtrongbang + 1];
                    }
                }
                // số lượng bảng ghi = 0
                else
                    tempcheck = new Entities.SoDuCongNo[sohangtrongbang + 1];
                // nếu số lượng bảng ghi khác 0
                if (tempcheck.Length != 0)
                {
                    try
                    {
                        // số lượng bảng ghi = số lượng row list view
                        if (tempcheck.Length == hienthi.Length)
                        {
                            for (int j = 0; j < tempcheck.Length; j++)
                            {
                                // nếu mã = mã trong list view
                                if (txtMaDoiTuong.Text == hienthi[j].MaDoiTuong)
                                {
                                    //
                                    tempcheck[j] = new Entities.SoDuCongNo("Insert", 0, masoducongno, txtMaDoiTuong.Text, txtTenDoiTuong.Text.ToString(), txtDiaChi.Text.ToString(), txtSoDuDauKy.Text, date, "0", loaidt, makho, false);
                                }
                                // nếu mã không = mã trong list view
                                else
                                    tempcheck[j] = new Entities.SoDuCongNo("Insert", hienthi[j].SoDuCongNoID, hienthi[j].MaSoDuCongNo, hienthi[j].MaDoiTuong, hienthi[j].TenDoiTuong, hienthi[j].DiaChi, hienthi[j].SoDuDauKy, hienthi[j].NgayKetChuyen, hienthi[j].SoDuCuoiKy, hienthi[j].LoaiDoiTuong, hienthi[j].MaKho, hienthi[j].TrangThai);

                            }
                        }
                        // số lượng bảng ghi không = số lượng row list view
                        else
                        {
                            for (int j = 0; j < tempcheck.Length; j++)
                            {
                                // lấy lại số bảng ghi trên list view
                                if (j < tempcheck.Length - 1)
                                    tempcheck[j] = new Entities.SoDuCongNo("Insert", hienthi[j].SoDuCongNoID, hienthi[j].MaSoDuCongNo, hienthi[j].MaDoiTuong, hienthi[j].TenDoiTuong, hienthi[j].DiaChi, hienthi[j].SoDuDauKy, hienthi[j].NgayKetChuyen, hienthi[j].SoDuCuoiKy, hienthi[j].LoaiDoiTuong, hienthi[j].MaKho, hienthi[j].TrangThai);
                                // bảng ghi cuối cùng là mới insert vào
                                else
                                {
                                    tempcheck[tempcheck.Length - 1] = new Entities.SoDuCongNo("Insert", 0, masoducongno, txtMaDoiTuong.Text, txtTenDoiTuong.Text.ToString(), txtDiaChi.Text.ToString(), txtSoDuDauKy.Text, date, "0", loaidt, makho, false);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {

                        tempcheck[tempcheck.Length - 1] = new Entities.SoDuCongNo("Insert", 0, masoducongno, txtMaDoiTuong.Text, txtTenDoiTuong.Text.ToString(), txtDiaChi.Text.ToString(), txtSoDuDauKy.Text, date, "0", loaidt, makho, false);
                    }
                    dgvHienThi.DataSource = tempcheck;
                    fix();
                }
            }
            catch
            {

                tempcheck = new Entities.SoDuCongNo[1];
                tempcheck[0] = new Entities.SoDuCongNo("Insert", 0, masoducongno, txtMaDoiTuong.Text, txtTenDoiTuong.Text.ToString(), txtDiaChi.Text.ToString(), txtSoDuDauKy.Text, date, "0", loaidt, makho, false);
                dgvHienThi.DataSource = tempcheck;
                fix();
            }
            finally
            {

            }
        }
        #endregion

        #region validate
        public bool Validate()
        {
            if (txtMaDoiTuong.Text == "")
            {
                MessageBox.Show(Common.MSG.MSG13(lbMaDoiTuong.Text.ToString()), Common.MSG.TieuDe, MessageBoxButtons.OK);
                txtMaDoiTuong.Focus();
                return false;
            }
            if (txtSoDuDauKy.Text == "")
            {
                MessageBox.Show(Common.MSG.MSG13(lbSoDuDauKy.Text.ToString()), Common.MSG.TieuDe, MessageBoxButtons.OK);
                txtSoDuDauKy.Focus();
                return false;
            }
            return true;
        }
        #endregion

        #region Check Permission
        public bool CheckPer()
        {
            return true;
        }
        #endregion

        #region Ghi Lại
        void GhiLai()
        {
            try
            {


                if (checkTrangThai)
                {
                    return;
                }
                //sdcn = XuLyObject("Insert");
                tempcheck = (Entities.SoDuCongNo[])dgvHienThi.DataSource;
                // kiểm tra giá trị trong dtgv

                string month1 = date.Month.ToString();
                //nếu tháng hiện tại không = tháng đang xử lý
                if (month1 != month)
                {
                    MessageBox.Show("Không phải kỳ hiện tại - xin kiểm tra lại", "Hệ thống cảnh báo");
                    return;
                }
                hienthi = Common.StaticVariable.InterfaceObject.SelectCongNoTheoKho(makho);
                // nếu obj khác null
                if (hienthi != null)
                {
                    for (int i = 0; i < hienthi.Length; i++)
                    {
                        string monthkytruoc = (Convert.ToInt32(month) - 1).ToString();
                        string mm = hienthi[i].NgayKetChuyen.Month.ToString();
                        // kiểm tra kỳ trước có tồn tại số dư hay không
                        if (mm == monthkytruoc && hienthi[i].MaDoiTuong == sdcn.MaDoiTuong)
                        {
                            MessageBox.Show("Số dư đầu kỳ là kết chuyển từ kỳ trước - không thể thay đổi", "Hệ thống cảnh báo");
                            return;
                        }
                    }
                }
                //nếu không tồn tại số dư kỳ trước
                try
                {
                    bool loaidt = false;
                    if (cbbDoiTuong.SelectedIndex == 0)
                        loaidt = false;
                    else
                        loaidt = true;
                    loaidoituong = loaidt;
                    ArrayList array = new ArrayList();
                    bool kt = false;
                    foreach (Entities.SoDuCongNo item in tempcheck)
                    {
                        kt = false;
                        foreach (Entities.SoDuCongNo item1 in sodcn)
                        {
                            if (item.MaDoiTuong == item1.MaDoiTuong)
                            {
                                kt = true; break;
                            }
                        }
                        if (!kt)
                        {
                            item.MaSoDuCongNo = "";
                            item.NgayKetChuyen = date;
                            item.SoDuCuoiKy = "0";
                            array.Add(item);
                        }
                    }
                    tempcheck = (Entities.SoDuCongNo[])array.ToArray(typeof(Entities.SoDuCongNo));
                    if (Common.StaticVariable.InterfaceObject.InsertUpdateCongNo(tempcheck) == 0)
                    {
                        MessageBox.Show("Thêm số dư đầu kỳ thất bại - xin thử lại sau", "Hệ thống cảnh báo");
                        Select();
                        return;
                    }

                    checkClose = true;
                    tempcheck = null;
                    this.Close();
                }
                catch
                {
                }

            }
            catch
            {
            }
        }
        #endregion

        #region Check Conflic Delete
        public bool CheckConflicDelete()
        {
            try
            {
                Entities.SoDuCongNo[] temp = HienThi(makho);
                for (int i = 0; i < temp.Length; i++)
                {
                    if (sdcn.MaDoiTuong == temp[i].MaDoiTuong)
                    {
                        return true;
                    }
                }
                return false;
            }
            catch
            {
                return false;
            }
        }
        #endregion

        #region xóa
        int i = 0;
        void Xoa()
        {
            if (i < 0)
                return;
            if (dgvHienThi.RowCount == 0)
                return;
            try
            {
                string month1 = date.Month.ToString();
                // kiểm tra tháng hiên tại và tháng được chọn
                if (month1 != month)
                {
                    MessageBox.Show("Không phải kỳ hiện tại", "Hệ thống cảnh báo");
                    return;
                }
                hienthi = HienThi(makho);
                // nếu obj khác null
                if (hienthi != null)
                {
                    for (int j = 0; j < hienthi.Length; j++)
                    {
                        string monthkytruoc = (Convert.ToInt32(month) - 1).ToString();
                        string mm = hienthi[j].NgayKetChuyen.Month.ToString();
                        // kiểm tra kỳ trước của tháng đang chọn
                        if (mm == monthkytruoc)
                        {
                            MessageBox.Show("Số dư đầu kỳ là kết chuyển từ kỳ trước - không thể thay đổi", "Hệ thống cảnh báo");
                            Select();
                            return;
                        }
                    }
                }
                // nếu kỳ trc không tồn tại
                Entities.SoDuCongNo temp = new Entities.SoDuCongNo();
                temp.HanhDong = "Delete";
                temp.MaSoDuCongNo = save.MaSoDuCongNo;
                temp.SoDuDauKy = save.SoDuDauKy;
                temp.MaDoiTuong = save.MaDoiTuong;
                temp.MaKho = makho;
                if (hienthi.Length >= 1)
                {
                    if (Common.StaticVariable.InterfaceObject.DeleteCongNo(temp) == 0)
                    {
                        MessageBox.Show("Xóa thất bại - xin thử lại sau", "Hệ thống cảnh báo");
                        return;
                    }
                    Select();
                }
                
            }
            catch
            {
            }
        }


        #endregion

        #region Thoát
        void Thoat()
        {
            this.Close();
        }
        #endregion

        #region Thêm đối tượng
        public void ThemDoiTuong()
        {
            if (cbbDoiTuong.SelectedIndex == 0)
            {
                GUI.TimKiem.frmTimKiemKhachHang a = new GUI.TimKiem.frmTimKiemKhachHang();
                a.ShowDialog();
                if (TimKiem.frmTimKiemKhachHang.khachhang != null)
                {
                    txtMaDoiTuong.Text = madoituong = TimKiem.frmTimKiemKhachHang.khachhang.MaKhachHang;
                    txtTenDoiTuong.Text = TimKiem.frmTimKiemKhachHang.khachhang.Ten;
                    txtDiaChi.Text = TimKiem.frmTimKiemKhachHang.khachhang.DiaChi;
                    sono = Convert.ToDouble(TimKiem.frmTimKiemKhachHang.khachhang.DuNo.ToString());
                    txtSoDuDauKy.Focus();
                    TimKiem.frmTimKiemKhachHang.khachhang = null;
                }
            }
            else
            {
                GUI.TimKiem.frmTimKiemNCC tkh = new GUI.TimKiem.frmTimKiemNCC();
                tkh.ShowDialog();
                if (TimKiem.frmTimKiemNCC.NhaCungCap != null)
                {
                    txtMaDoiTuong.Text = TimKiem.frmTimKiemNCC.NhaCungCap.MaNhaCungCap;
                    txtTenDoiTuong.Text = TimKiem.frmTimKiemNCC.NhaCungCap.TenNhaCungCap;
                    txtDiaChi.Text = TimKiem.frmTimKiemNCC.NhaCungCap.DiaChi;
                    sono = Convert.ToDouble(TimKiem.frmTimKiemNCC.NhaCungCap.DuNo.ToString());
                    txtSoDuDauKy.Focus();
                    TimKiem.frmTimKiemNCC.NhaCungCap = null;
                }
            }
        }
        #endregion

        #region xử lý object
        public void XuLyDuLieu(Entities.SoDuCongNo sdcn)
        {
            try
            {
                masoducongno = sdcn.MaSoDuCongNo;
                txtMaDoiTuong.Text = sdcn.MaDoiTuong;
                txtTenDoiTuong.Text = sdcn.TenDoiTuong;
                txtDiaChi.Text = sdcn.DiaChi;
                txtSoDuDauKy.Text = sdcn.SoDuDauKy;
                date = sdcn.NgayKetChuyen;

            }
            catch
            {
            }
        }
        public Entities.SoDuCongNo XuLyObject(string hanhDong)
        {
            try
            {
                Entities.SoDuCongNo sdcn = new Entities.SoDuCongNo();
                sdcn.HanhDong = hanhDong;
                sdcn.MaSoDuCongNo = masoducongno;
                sdcn.MaDoiTuong = txtMaDoiTuong.Text;
                sdcn.TenDoiTuong = txtTenDoiTuong.Text.ToString();
                sdcn.DiaChi = txtDiaChi.Text.ToString();
                sdcn.SoDuDauKy = txtSoDuDauKy.Text;
                sdcn.NgayKetChuyen = date;
                sdcn.SoDuCuoiKy = soducuoiky;
                sdcn.LoaiDoiTuong = loaidoituong;
                sdcn.TrangThai = trangthai;
                return sdcn;

            }
            catch
            {
                return null;
            }
        }
        #endregion

        #region Event
        private void frmNhapSoDu_Load(object sender, EventArgs e)
        {
            this.FormClosing += new FormClosingEventHandler(frmNhapSoDu_FormClosing);
            btnGhiLai.Click += new EventHandler(btnGhiLai_Click);
            btnThemGV.Click += new EventHandler(btnThemGV_Click);
            btnThoat.Click += new EventHandler(btnThoat_Click);
            btnXoa.Click += new EventHandler(btnXoa_Click);
            dgvHienThi.CellClick += new DataGridViewCellEventHandler(dgvHienThi_CellClick);
            dgvHienThi.CellDoubleClick += new DataGridViewCellEventHandler(dgvHienThi_CellDoubleClick);
            dgvHienThi.KeyDown += new KeyEventHandler(dgvHienThi_KeyDown);
            txtMaDoiTuong.KeyDown += new KeyEventHandler(txtMaDoiTuong_KeyDown);
            txtSoDuDauKy.TextChanged += new EventHandler(txtSoDuDauKy_TextChanged);
            txtSoDuDauKy.KeyDown += new KeyEventHandler(txtSoDuDauKy_KeyDown);
            cbbDoiTuong.SelectedIndexChanged += new EventHandler(cbb_SelectedIndexChanged);
            cbbNam.SelectedIndexChanged += new EventHandler(cbb_SelectedIndexChanged);
            cbbThang.SelectedIndexChanged += new EventHandler(cbb_SelectedIndexChanged);
            this.WindowState = FormWindowState.Maximized;
        }

        void cbb_SelectedIndexChanged(object sender, EventArgs e)
        {
            month = cbbThang.Text;
            year = cbbNam.Text;
            Select();
        }

        void txtSoDuDauKy_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                ThemLV();
            }
        }

        void txtSoDuDauKy_TextChanged(object sender, EventArgs e)
        {
            TextBox temp = (TextBox)sender;
            int vt = temp.SelectionStart;
            string str = new string(temp.Text.ToList<char>().Where(c => char.IsNumber(c)).ToArray<char>());

            temp.Text = str;

            temp.SelectionStart = vt;
        }

        void txtMaDoiTuong_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.F4)
            {
                ThemDoiTuong();
            }
        }

        void dgvHienThi_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Delete)
            {
                SuaRow();
            }
        }

        void dgvHienThi_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            SuaRow();
        }

        void dgvHienThi_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            i = e.RowIndex;
            if (i < 0)
                return;
            if (dgvHienThi.RowCount == 0)
                return;
            save = ((Entities.SoDuCongNo[])dgvHienThi.DataSource)[i];
        }

        void btnXoa_Click(object sender, EventArgs e)
        {
            SuaRow();
        }

        void btnThoat_Click(object sender, EventArgs e)
        {
            Thoat();
        }

        void btnThemGV_Click(object sender, EventArgs e)
        {
            ThemLV();
        }

        void btnGhiLai_Click(object sender, EventArgs e)
        {
            GhiLai();
        }

        void frmNhapSoDu_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!checkClose)
                if (MessageBox.Show(Common.MSG.MSG2(), Common.MSG.TieuDe, MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                {
                    e.Cancel = checkClose;
                }
                else
                    e.Cancel = !checkClose;
        }
        #endregion
    }
}
#endregion